#define _CRT_SECURE_NO_WARNINGS 1
#include<locale.h>
#include"snake.h"


//完成的是游戏的测试逻辑
void Test()
{
	char ch;
	do
	{
		//读取文件记录的最高分数
		dataload();

		//创建贪吃蛇
		//1.用结构体描述蛇每一个节点要包含的内容-》内容中存储这个节点的坐标加上指向下一个节点的指针

		//pSnakdeNode pSnake = NULL;
		//用一个该结构体类型的指针作为头指针来维护蛇的信息
		//这些信息有：
		//1.找到蛇的头
		//2.蛇的速度
		//3.蛇的方向
		//4.食物
		//5.食物分数
		//6.总分
		//7.蛇的状态（运动，暂停，撞墙，撞自己身体，正常退出）
		//所以我们发现要维护的内容有很多，所以我们不妨把这些信息也封装进一个结构体中，欸接近类了

		//那么创建贪吃蛇也就是用这个蛇信息结构体(类)创建一个对象就好了
		Snake snake = { 0 };

		//初始化游戏
		//0.隐藏光标（不然界面上光标会一直闪，不好看）
		//1.打印开始界面
		//2.打印功能介绍（按键教程）
		//3.绘制地图
		//4.创建蛇
		//5.创建食物
		//6.设置游戏相关信息
		//也就是我们需要一个初始化游戏的函数去对蛇对象完成这些初始化工作,过程中肯定要修改蛇对象中的值的，所以传地址
		GameStart(&snake);


		//游戏运行的逻辑
		GameRun(&snake); //由于运行游戏要操控蛇，所以我们得传蛇地址过去才能对其进行操作

		//结束游戏——善后工作，释放链表开辟的每个的节点空间
		GameEnd(&snake);
		datasave(); //记录一下最高分
		SetPos(15, 16);
		printf("要再来一局吗？（Y/N）：");
		ClearConsoleInputBuffer(); // 调用此函数清空缓冲区
		ch = getchar();
		//当我们没输入enter：\n时一直循环读
		while (getchar() != '\n');
	} while (ch == 'y' || ch == 'Y');
	SetPos(0, 27);
}


int main()
{
	//本地化
	setlocale(LC_ALL, "");
	//设置生成随机数rand的前置工作
	srand((unsigned int)time(NULL)); //需要包含time.h头文件

	Test();

	return 0;
}
